Amazon Aurora の Global Database と クロスリージョンリードレプリカを同一リージョンに作成してみた
こんにちは、崔です。
Amazon Aurora MySQL では、プライマリークラスターとは別のリージョンに対して、物理レプリケーションである Global Database の機能が提供されています。
また、論理レプリケーションであるクロスリージョンリードレプリカの機能を用いて、レプリケートすることも可能です。
今回、Amazon Aurora のドキュメント履歴を確認していると、 May 18,2020
に更新がされており、Aurora Global Database のセカンダリークラスターと同じリージョンにクロスリージョンリードレプリカを作成できるようになっていました。
Document History - Amazon Aurora
念の為、Amazon Aurora のドキュメントの更新された Using Amazon Aurora Global Databases - Amazon Aurora の GitHub の 更新履歴 で確認しました。
確かに、上記のピンクの部分、
You can't create an Aurora MySQL cross\-Region read replica from the primary cluster in the same region as a secondary cluster\.
の箇所がなくなっています。
それでは、早速、同一リージョンにGlobal Database のセカンダリークラスターとクロスリージョンリードレプリカを作成してみましょう。
Global Database の作成
では、まずこのクラスターからGlobal Databaseを作成していきます。
「アクション」から「リージョンの追加」を選択します。
「グローバルデータベース名」を指定、セカンダリーリージョンを選択します。
DBインスタンスサイズとマルチAZ配置を設定した後に、セカンダリーリージョンで利用するVPC等を設定します。
あらかじめ、セカンダリーリージョンでVPCやサブネット、サブネットグループ、パラメーターグループ等を作成しておきましょう。
セカンダリークラスターのクラスター名、インスタンス名、パラメーターグループを設定します。
各項目を設定後、「リージョンの追加」をクリックします。
これで、セカンダリークラスターの完成です。
クロスリージョンリードレプリカの作成
では、クロスリージョンリードレプリカを作成していきます。
まず、クラスタパラメータグループの binlog_format
を OFF
から MIXED
へ設定します。
変更したパラメーターグループを反映させるために、プライマリークラスターのインスタンスを再起動します。
アクションメニューから、「クロスリージョンリードレプリカの作成」を選択します。
「送信先リージョン」、「DBサブネットグループ」、「クラスター名」、「インスタンス名」等を入力します。
これで、クロスリージョンリードレプリカが作成されます。
無事に作成することができました。
まとめ
プライマリークラスターとは別のリージョンで、Global Database のセカンダリークラスターとクロスリージョンリードレプリカを併用できることが確認できました。
ですが、正直、これら2つの機能は、同一リージョンで併用することはあまりないかなあと思います。
セカンダリークラスターを最大インスタンス数までスケールしても、まだ足りない場合などでしょうか。
基本的には、別リージョンにレプリケートする場合、Global Database を選択することが多いでしょう。
Global Database は、通常、1秒未満のレイテンシーでレプリケート、1分未満で昇格することが可能、かつ、物理レプリケーションのため、プライマリークラスターへのパフォーマンス影響もほとんどありません。
それに比べて、クロスリージョンリードレプリカは、AWSリージョン間のネットワークチャネルの分だけ、ラグタイムが発生します。
また、ソースDBクラスターから転送されるデータやスナップショットにも転送料金がかかります。
ただし、Global Database を利用するには、次のようにバージョンやインスタンスクラスに制限があるので、注意が必要です。
- Aurora MySQL 5.6.10a または、1.22以降、もしくは、2.07以降で利用可能
- Aurora PostgreSQL 10.11, 10.12, 11.7 以降
- (ただし、PostgreSQL互換には、Auroraによるクロスリージョンリードレプリカ機能は未提供)
- db.r4 もしくはdb.r5インスタンスクラスで利用可能
- Global Database内のDBクラスターは停止/起動ができない
上記以外のGlobal Database の制限についてはこちらを確認ください。
Amazon Aurora グローバルデータベースの使用 - Amazon Aurora
これらの制限に引っかかる場合は、クロスリージョンリードレプリカを利用することになります。
Global Database とクロスリージョンリードレプリカについては、環境によって、うまく使い分けをしていければと思います。